charger28 2.2.1
Loading...
Searching...
No Matches
charger28


Charger 28 Click

Charger 28 Click demo application is developed using the NECTO Studio, ensuring compatibility with mikroSDK's open-source libraries and tools. Designed for plug-and-play implementation and testing, the demo is fully compatible with all development, starter, and mikromedia boards featuring a mikroBUS™ socket.


Click Library

  • Author : Stefan Filipovic
  • Date : Nov 2024.
  • Type : I2C type

Software Support

Example Description

This example demonstrates the use of the Charger 28 Click board by monitoring various parameters of the charging system, such as input voltage (VBUS), battery voltage (VBAT), system voltage (VSYS), charging current (IBAT), and chip temperature (TDIE). Additionally, it reads and interprets the charger status and fault registers to provide detailed status and error feedback during operation.

Example Libraries

  • MikroSDK.Board
  • MikroSDK.Log
  • Click.Charger28

Example Key Functions

Application Init

Initializes the driver and performs the default configuration of the Charger 28 Click by disabling charging, resetting registers, disabling the TS pin, configuring the ADC, and re-enabling charging.

void application_init ( void )
{
log_cfg_t log_cfg;
charger28_cfg_t charger28_cfg;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
charger28_cfg_setup( &charger28_cfg );
if ( I2C_MASTER_ERROR == charger28_init( &charger28, &charger28_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
if ( CHARGER28_ERROR == charger28_default_cfg ( &charger28 ) )
{
log_error( &logger, " Default configuration." );
for ( ; ; );
}
log_info( &logger, " Application Task " );
}
@ CHARGER28_ERROR
Definition charger28.h:393
#define CHARGER28_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition charger28.h:334
void application_init(void)
Definition main.c:53
#define MIKROBUS_POSITION_CHARGER28
Definition main.c:37

Application Task

Periodically retrieves and logs charging parameters such as input voltage, battery voltage, system voltage, charging current, and temperature. The application also reads the status and fault registers to determine the current charging state and logs the information for debugging or monitoring purposes.

void application_task ( void )
{
float ibus = 0, vbat = 0, vsys = 0, adcin = 0, tdie = 0;
uint8_t status_0 = 0, status_1 = 0, fault = 0;
uint16_t vbus = 0, vpmid = 0;
int16_t ibat = 0;
if ( CHARGER28_OK == charger28_get_vbus ( &charger28, &vbus ) )
{
log_printf ( &logger, "\r\n VBUS: %u mV\r\n", vbus );
}
if ( CHARGER28_OK == charger28_get_ibus ( &charger28, &ibus ) )
{
log_printf ( &logger, " IBUS: %.1f mA\r\n", ibus );
}
if ( CHARGER28_OK == charger28_get_vbat ( &charger28, &vbat ) )
{
log_printf ( &logger, " VBAT: %.2f mV\r\n", vbat );
}
if ( CHARGER28_OK == charger28_get_ibat ( &charger28, &ibat ) )
{
log_printf ( &logger, " IBAT: %d mA\r\n", ibat );
}
if ( CHARGER28_OK == charger28_get_vsys ( &charger28, &vsys ) )
{
log_printf ( &logger, " VSYS: %.2f mV\r\n", vsys );
}
if ( CHARGER28_OK == charger28_get_vpmid ( &charger28, &vpmid ) )
{
log_printf ( &logger, " VPMID: %u mV\r\n", vpmid );
}
if ( CHARGER28_OK == charger28_get_adcin ( &charger28, &adcin ) )
{
log_printf ( &logger, " ADCIN: %.2f mV\r\n", adcin );
}
if ( CHARGER28_OK == charger28_get_tdie ( &charger28, &tdie ) )
{
log_printf ( &logger, " TDIE: %.1f degC\r\n", tdie );
}
{
log_printf ( &logger, " Status 0: 0x%.2X\r\n", ( uint16_t ) status_0 );
}
{
log_printf ( &logger, " Status 1: 0x%.2X\r\n", ( uint16_t ) status_1 );
charger28_parse_charge_status ( status_1 );
}
{
log_printf ( &logger, " Fault: 0x%.2X\r\n", ( uint16_t ) fault );
}
Delay_ms ( 1000 );
}
@ CHARGER28_OK
Definition charger28.h:392
#define CHARGER28_REG_CHARGER_STATUS_0
Definition charger28.h:93
#define CHARGER28_REG_FAULT_STATUS
Definition charger28.h:95
#define CHARGER28_REG_CHARGER_STATUS_1
Definition charger28.h:94
err_t charger28_get_ibat(charger28_t *ctx, int16_t *ibat)
Charger 28 get battery current function.
err_t charger28_get_tdie(charger28_t *ctx, float *tdie)
Charger 28 get die temperature function.
err_t charger28_get_adcin(charger28_t *ctx, float *adcin)
Charger 28 get ADC input function.
err_t charger28_read_reg_byte(charger28_t *ctx, uint8_t reg, uint8_t *data_out)
Charger 28 read single register byte function.
err_t charger28_get_vpmid(charger28_t *ctx, uint16_t *vpmid)
Charger 28 get PMID voltage function.
err_t charger28_get_vsys(charger28_t *ctx, float *vsys)
Charger 28 get system voltage function.
void application_task(void)
Definition main.c:89

Note

The application is designed to continuously monitor the charging system, providing real-time feedback on its operation. The detailed charge status parsing includes states such as "Not Charging", "Trickle Charge", "Fast Charge", and "Charge Done", among others, to help track the charging process.

Application Output

This Click board can be interfaced and monitored in two ways:

  • Application Output - Use the "Application Output" window in Debug mode for real-time data monitoring. Set it up properly by following this tutorial.
  • UART Terminal - Monitor data via the UART Terminal using a USB to UART converter. For detailed instructions, check out this tutorial.

Additional Notes and Information

The complete application code and a ready-to-use project are available through the NECTO Studio Package Manager for direct installation in the NECTO Studio. The application code can also be found on the MIKROE GitHub account.